package customerEnter.Frame.JDBCDao;

import java.util.List;

import customerEnter.Frame.DaoDataTransmission.FrameBeanSuper;
import customerEnter.Frame.JDBCDao.Interface.DaoFrameDMLBaseInterfaces;
import customerEnter.Frame.JDBCDao.Interface.ParametersResultInterface;

/**
 * 數據層的安全鍋爐設計 數據查詢方法做了更詳細的設計 每一結果對應一個方法
 * 
 * 类名称：Base 类描述： 创建人：dy 创建时间：2016-3-16 下午1:36:48 T 实体 k 数据传输类型(返回的類型)
 * 
 * @param <T>
 * @param <K>
 */
@SuppressWarnings({ "hiding", "rawtypes" })
public class DaoFrameDMLBase<T, K extends FrameBeanSuper> extends DaoFrameDMLTrans<T, K> implements
		DaoFrameDMLBaseInterfaces<T, K> {

	/**
	 * serialVersionUID:TODO（用一句话描述这个变量表示什么）
	 * 
	 * @since Ver 1.1
	 */
	private static final long	serialVersionUID	= 1L;

	/**
	 * 查找這個表裡面所有數據返回 bean的所有屬性 數據庫列 和bean的屬性相互映射
	 * 
	 * 有缓存
	 * 
	 * tableName：數據庫表名
	 * 
	 * class1：返回數據 封裝的bean的類型
	 * 
	 * 例如：findAll("Shopping",Shopping.class)
	 * 
	 * 返回 List<Shopping> list 類型數據
	 */
	public <T> List<K> findAll(String tableName, Class<K> class1) {
		return daoFrameDMLBaseInterfaces.findAll(tableName, class1);
	}

	/**
	 * 根據id查找表的數據 數據庫列 和bean的屬性相互映射
	 * 
	 * 有缓存
	 * 
	 * id:id
	 * 
	 * tableName：數據庫表名
	 * 
	 * class1：返回數據 封裝的bean的類型
	 * 
	 * 例如：findId(1,"Shopping",Shopping.class)
	 * 
	 * 返回 Shopping 類型數據
	 */
	public K findId(Integer id, String tableName, Class<K> class1) {
		return daoFrameDMLBaseInterfaces.findId(id, tableName, class1);
	}

	/**
	 * 查找不分頁 不統計總數的多行數據 全部的列都會查找出來 數據庫列 和bean的屬性相互映射
	 * 
	 * 有缓存
	 * 
	 * where:如果有條件 記得加上and 沒有可以不填
	 * 
	 * tableName：數據庫表名
	 * 
	 * class1：返回數據 封裝的bean的類型
	 * 
	 * 
	 * 例如：findSeleList(" and id>1 ","[Shopping]",Shopping.class)
	 * 
	 * 返回 List<Shopping> list 類型數據
	 */
	public List<K> findSeleList(String where, String tableName, Class<K> class1) {
		return daoFrameDMLBaseInterfaces.findSeleList(where, tableName, class1);
	}

	/**
	 * 查找不分頁 不統計總數的多行數據 數據庫列 和bean的屬性相互映射
	 * 
	 * 無缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * where:如果有條件 記得加上and 沒有可以不填
	 * 
	 * ClassName：數據庫表名
	 * 
	 * class1：返回數據 封裝的bean的類型
	 * 
	 * 
	 * 例如：findSeleList(" * " ,"[Shopping]"," and id>1 ",Shopping.class)
	 * 
	 * 返回 List<Shopping> list 類型數據
	 */
	public <K> List<K> findSeleList(String Front, String ClassName, String where, Class<K> class1) {
		return daoFrameDMLBaseInterfaces.findSeleList(Front, ClassName, where, class1);
	}

	/**
	 * 查找不分頁 不統計總數的多行數據 數據庫列 和bean的屬性相互映射
	 * 
	 * 無缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * where:如果有條件 記得加上and 沒有可以不填
	 * 
	 * ClassName：數據庫表名
	 * 
	 * class1：返回數據 封裝的bean的類型
	 * 
	 * 
	 * 例如：findSeleCont(" * " ,"[Shopping]"," and id>1 ",Shopping.class)
	 * 
	 * 返回 List<Shopping> list 類型數據
	 * 
	 * 已過時 不建議使用
	 */
	@Deprecated
	public List<K> findSeleCont(String Front, String ClassName, String where, Class<K> class1) {
		return daoFrameDMLBaseInterfaces.findSeleCont(Front, ClassName, where, class1);
	}

	/**
	 * 查找不分頁 不統計總數的多行數據 數據庫列 和bean的屬性相互映射
	 * 
	 * 有缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * where: 如果有條件 記得加上and 沒有可以不填
	 * 
	 * ClassName：數據庫表名
	 * 
	 * class1：返回數據 封裝的bean的類型
	 * 
	 * 
	 * 例如：findSelecClasses(" * " ,"[Shopping]","   and id>1 ",Shopping.class)
	 * 
	 * 
	 * 返回 List<Shopping> list 類型數據
	 * 
	 */
	public <A> List<A> findSelecClasses(String Front, String ClassName, String where, Class<A> Class) {
		return daoFrameDMLBaseInterfaces.findSelecClasses(Front, ClassName, where, Class);
	}

	/**
	 * 查找不分頁 不統計總數的多行數據 數據庫列 和bean的屬性相互映射
	 * 
	 * 有缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * where: 要自己寫 數據庫 where關鍵字
	 * 
	 * ClassName：數據庫表名
	 * 
	 * class1：返回數據 封裝的bean的類型
	 * 
	 * 
	 * 例如：findSelecJoinOnTable(" * ","[Shopping]"," where id<100 and id>1 ",
	 * Shopping. class)
	 * 
	 * 
	 * 返回 List<Shopping> list 類型數據
	 * 
	 */
	public <T> List<T> findSelecJoinOnTable(String Front, String ClassName, String where, Class<T> Class) {
		return daoFrameDMLBaseInterfaces.findSelecJoinOnTable(Front, ClassName, where, Class);
	}

	/**
	 * 查找不分頁 不統計總數的多行數據 數據庫列 和bean的屬性相互映射
	 * 
	 * 無缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * where: 如果有條件 記得加上and 沒有可以不填
	 * 
	 * ClassName：數據庫表名
	 * 
	 * class1：返回數據 封裝的bean的類型
	 * 
	 * 
	 * 例如：findSelecNoEachClasses(" * ","[Shopping]","  and id>1 ", Shopping.
	 * class)
	 * 
	 * 返回 List<Shopping> list 類型數據
	 * 
	 */
	public <T> List<T> findSelecNoEachClasses(String Front, String ClassName, String where, Class<T> Class) {
		return daoFrameDMLBaseInterfaces.findSelecNoEachClasses(Front, ClassName, where, Class);
	}

	/**
	 * 查找不分頁 不統計總數的單行數據 數據庫列 和bean的屬性相互映射
	 * 
	 * 無缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * where: 如果有條件 記得加上and 沒有可以不填
	 * 
	 * ClassName：數據庫表名
	 * 
	 * class1：返回數據 封裝的bean的類型
	 * 
	 * 
	 * 例如：findSelecNoEachSingle(" top 1 * ","[Shopping]"," ", Shopping. class)
	 * 
	 * 返回 Shopping 類型數據
	 * 
	 */
	public <Other> Other findSelecNoEachSingle(String Front, String ClassName, String where, Class<Other> Class) {
		return daoFrameDMLBaseInterfaces.findSelecNoEachSingle(Front, ClassName, where, Class);
	}

	/**
	 * 查找不分頁 不統計總數的多行數據 數據庫列 和bean的屬性相互映射
	 * 
	 * 無缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * where: 如果有條件 記得加上and 沒有可以不填
	 * 
	 * ClassName：數據庫表名
	 * 
	 * class1：返回數據 封裝的bean的類型
	 * 
	 * 
	 * 例如：findTransmissionData(" top 1 * ","[Shopping]"," ", Shopping. class)
	 * 
	 * 返回 Shopping 類型數據
	 * 
	 */
	public <Transmission> List<Transmission> findTransmissionData(String Front, String ClassName, String where,
			Class<Transmission> Class) {
		return daoFrameDMLBaseInterfaces.findTransmissionData(Front, ClassName, where, Class);
	}

	/**
	 * 查找不分頁 不統計總數的 單行 單列 數據 數據庫列
	 * 
	 * 無缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * where: 如果有條件 記得加上and 沒有可以不填
	 * 
	 * ClassName：數據庫表名
	 * 
	 * 例如：findCountData("love","[Shopping]"," id=1 ") 查詢id=1 心動數量
	 * 
	 * 例如：findCountData("count(*) ","[Shopping]","  ") 查詢商品的總數
	 * 
	 * 返回 int 類型數據
	 * 
	 */
	public <T> T findCountData(String Front, String ClassName, String where) {
		return daoFrameDMLBaseInterfaces.findCountData(Front, ClassName, where);
	}

	/**
	 * 插入數據到數據庫
	 * 
	 * Table：數據庫表名
	 * 
	 * MappingObject：數據庫和bean 所映射的類 不用填 設置id
	 * 
	 * ShangPing shangpin=new ShangPing();
	 * 
	 * shagnping.setTitle("時尚魅力品牌男鞋");
	 * 
	 * shagnping.set....
	 * 
	 * shagnping.set....
	 * 
	 * shagnping.set....
	 * 
	 * 例如：saveTable("[Shopping]",shangpin)
	 * 
	 * 返回 成功的數量 int 類型數據
	 * 
	 */
	public <T> T saveTable(String Table, Object MappingObject) {
		return daoFrameDMLBaseInterfaces.saveTable(Table, MappingObject);
	}

	/**
	 * 插入數據到數據庫
	 * 
	 * Table：數據庫表名
	 * 
	 * MappingObject：數據庫和bean 所映射的類 不用填 設置id
	 * 
	 * ShangPing shangpin=new ShangPing();
	 * 
	 * shagnping.setTitle("時尚魅力品牌男鞋");
	 * 
	 * shagnping.set....
	 * 
	 * shagnping.set....
	 * 
	 * shagnping.set....
	 * 
	 * 例如：saveTable("[Shopping]",shangpin)
	 * 
	 * 返回 插入的id
	 * 
	 * int 類型數據
	 * 
	 */
	public <T> T saveTableReturnId(String Table, Object MappingObject) {
		return daoFrameDMLBaseInterfaces.saveTableReturnId(Table, MappingObject);
	}

	/**
	 * 修改數據
	 * 
	 * TableName：數據庫表名
	 * 
	 * where:修改的條件
	 * 
	 * MappingObject：數據庫和bean 所映射的類
	 * 
	 * ShangPing shangpin=new ShangPing();
	 * 
	 * shagnping.setTitle("時尚魅力品牌男鞋");
	 * 
	 * shagnping.set....
	 * 
	 * shagnping.set....
	 * 
	 * shagnping.set....
	 * 
	 * 特殊：shagnping.setLoves(0) ,或者shagnping.setLoves(null);會被屏蔽 此設置無效
	 * 
	 * shangping.setLoves(UpdateTableZeroAndEmpty.Zero);√
	 * 
	 * shagnping.setLoves( UpdateTableZeroAndEmpty.Empty);√
	 * 
	 * 
	 * 例如：UpdateTable("[Shopping]",shangpin," and id=1")
	 * 
	 * 返回 成功的條數
	 * 
	 * int 類型數據
	 * 
	 */
	public <T> T UpdateTable(String TableName, Object MappingObject, String where) {
		return daoFrameDMLBaseInterfaces.UpdateTable(TableName, MappingObject, where);
	}

	/**
	 * 查找分頁 不統計總數的 多行 多列 數據 數據庫列和bean屬性映射
	 * 
	 * 有缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * ClassName：數據庫表名
	 * 
	 * where: 如果有條件 記得加上and 沒有可以不填
	 * 
	 * size:長度
	 * 
	 * page：分頁的頁數 從0開始
	 * 
	 * order：排序的字段 一定要寫
	 * 
	 * descOrAsc：排序方式
	 * 
	 * Class:返回數據 封裝的bean的類型
	 * 
	 * 例如：findPagingTransmissionCacheData("count(*) ","[Shopping]","  ",10,0,
	 * "id","desc",ShagnPing.class) 查詢商品的總數
	 * 
	 * 返回 List<ShagnPing> 類型數據
	 * 
	 */
	public <Transmission> List<Transmission> findPagingTransmissionCacheData(String Front, String ClassName,
			String where, int size, int page, String order, String descOrAsc, Class<Transmission> Class) {
		return daoFrameDMLBaseInterfaces.findPagingTransmissionCacheData(Front, ClassName, where, size, page, order,
				descOrAsc, Class);
	}

	/**
	 * 查找分頁 不統計總數的 多行 多列 數據 數據庫列和bean屬性映射
	 * 
	 * 無缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * ClassName：數據庫表名
	 * 
	 * where: 如果有條件 記得加上and 沒有可以不填
	 * 
	 * size:長度
	 * 
	 * page：分頁的頁數 從0開始
	 * 
	 * order：排序的字段 一定要寫
	 * 
	 * descOrAsc：排序方式
	 * 
	 * Class:返回數據 封裝的bean的類型
	 * 
	 * 例如：findPagingTransmissionData("count(*) ","[Shopping]","  ",10,0,
	 * "id","desc",ShagnPing.class) 查詢商品的總數
	 * 
	 * 返回 List<ShagnPing> 類型數據
	 * 
	 */
	public <Transmission> List<Transmission> findPagingTransmissionData(String Front, String ClassName, String where,
			int size, int page, String order, String descOrAsc, Class<Transmission> Class) {
		return daoFrameDMLBaseInterfaces.findPagingTransmissionData(Front, ClassName, where, size, page, order,
				descOrAsc, Class);
	}

	/**
	 * 查找分頁 不統計總數的 多行 多列 數據 數據庫列和bean屬性映射 定位在某一個id後面 可以應用在很多人發佈帖子
	 * 並且你正在看其中某一部分帖子的情況
	 * 
	 * 有缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * ClassName：數據庫表名
	 * 
	 * where: 如果有條件 記得加上and 沒有可以不填
	 * 
	 * size:長度
	 * 
	 * page：分頁的頁數 從0開始
	 * 
	 * order：排序的字段 一定要寫
	 * 
	 * descOrAsc：排序方式
	 * 
	 * position:定位的id
	 * 
	 * Class:返回數據 封裝的bean的類型
	 * 
	 * 例如：findPagingTransmissionCacheData("count(*) ","[Shopping]","  ",10,0,
	 * "id","desc",10,ShagnPing.class) 查詢商品的總數
	 * 
	 * 返回 List<ShagnPing> 類型數據
	 * 
	 */
	public <Transmission> List<Transmission> findPagingTransmissionCacheData(String Front, String ClassName,
			String where, int size, int page, String order, String descOrAsc, int position, Class<Transmission> Class) {
		return daoFrameDMLBaseInterfaces.findPagingTransmissionCacheData(Front, ClassName, where, size, page, order,
				descOrAsc, position, Class);
	}

	/**
	 * 查找分頁 不統計總數 查找 多行 多列 數據 數據庫列和bean屬性映射
	 * 
	 * 無缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * ClassName：數據庫表名
	 * 
	 * where: 如果有條件 記得加上and 沒有可以不填
	 * 
	 * size:長度
	 * 
	 * page：分頁的頁數 從0開始
	 * 
	 * order：排序的字段 一定要寫
	 * 
	 * descOrAsc：排序方式
	 * 
	 * Class:返回數據 封裝的bean的類型
	 * 
	 * 例如：findPagingTransmissionData("count(*) ","[Shopping]","  ",10,0,
	 * "id","desc",ShagnPing.class) 查詢商品的總數
	 * 
	 * 返回 List<ShagnPing> 類型數據
	 * 
	 */
	public <Transmission> List<Transmission> findPagingTransmissionData(String Front, String ClassName, String where,
			int size, int page, String order, String descOrAsc, int position, Class<Transmission> Class) {
		return daoFrameDMLBaseInterfaces.findPagingTransmissionData(Front, ClassName, where, size, page, order,
				descOrAsc, position, Class);

	}

	/**
	 * 查找分頁 統計總數的 多行 多列 數據 數據庫列和bean屬性映射
	 * 
	 * 有缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * ClassName：數據庫表名
	 * 
	 * where: 如果有條件 記得加上and 沒有可以不填
	 * 
	 * size:長度
	 * 
	 * page：分頁的頁數 從0開始
	 * 
	 * order：排序的字段 一定要寫
	 * 
	 * descOrAsc：排序方式
	 * 
	 * Class:返回數據 封裝的bean的類型
	 * 
	 * 例如：findPagingParametersResultCacheData("count(*) ","[Shopping]","  ",10,0
	 * , "id","desc",ShagnPing.class) 查詢商品的總數
	 * 
	 * 返回 ParametersResultInterface 類型數據 接口返回的是 表的數據總數 和List<ShagnPing> 的數據
	 * 
	 */
	public ParametersResultInterface findPagingParametersResultCacheData(String Front, String ClassName, String where,
			int size, int page, String order, String descOrAsc, Class<?> Class) {
		return daoFrameDMLBaseInterfaces.findPagingParametersResultCacheData(Front, ClassName, where, size, page,
				order, descOrAsc, Class);
	}

	/**
	 * 查找分頁 統計總數的 多行 多列 數據 數據庫列和bean屬性映射
	 * 
	 * 無缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * ClassName：數據庫表名
	 * 
	 * where: 如果有條件 記得加上and 沒有可以不填
	 * 
	 * size:長度
	 * 
	 * page：分頁的頁數 從0開始
	 * 
	 * order：排序的字段 一定要寫
	 * 
	 * descOrAsc：排序方式
	 * 
	 * Class:返回數據 封裝的bean的類型
	 * 
	 * 例如：findPagingParametersResultCacheData("count(*) ","[Shopping]","  ",10,0
	 * , "id","desc",ShagnPing.class) 查詢商品的總數
	 * 
	 * 返回 ParametersResultInterface 類型數據 接口返回的是 表的數據總數 和List<ShagnPing> 的數據
	 * 
	 */
	public ParametersResultInterface findPagingParametersResultData(String Front, String ClassName, String where,
			int size, int page, String order, String descOrAsc, Class<?> Class) {
		return daoFrameDMLBaseInterfaces.findPagingParametersResultData(Front, ClassName, where, size, page, order,
				descOrAsc, Class);
	}

	/**
	 * 批量增加數據
	 * 
	 * TableName：數據庫表名
	 * 
	 * t:增加的數據
	 * 
	 * class1:數據返回的類型
	 * 
	 * ShangPing shangpin=new ShangPing();
	 * 
	 * shagnping.setTitle("時尚魅力品牌男鞋");
	 * 
	 * shagnping.set....
	 * 
	 * shagnping.set....
	 * 
	 * shagnping.set....
	 * 
	 * list<ShangPin> list=new ArrayList<ShangPin>();
	 * 
	 * list.add(shagnping); list.add(shagnping); list.add(shagnping);
	 * 
	 * 例如：InsertBatch("[Shopping]",list,ShangPin.class)
	 * 
	 * 返回 成功的條數
	 * 
	 * int 類型數據
	 * 
	 */
	public <Transmission> Object InsertBatch(String TableName, List<Transmission> t, Class<Transmission> class1) {
		return daoFrameDMLBaseInterfaces.InsertBatch(TableName, t, class1);
	}

	/**
	 * 初始化 类型参数 创建一个新的实例 DMLBase.
	 * 
	 */
	public DaoFrameDMLBase() {

	}

	/**
	 * 根據id查找表的數據 數據庫列 和bean的屬性相互映射
	 * 
	 * 無缓存
	 * 
	 * id:id
	 * 
	 * tableName：數據庫表名
	 * 
	 * class1：返回數據 封裝的bean的類型
	 * 
	 * 例如：queryDMLId(1,"Shopping",Shopping.class)
	 * 
	 * 返回 Shopping 類型數據
	 */
	public <DaoAutomatic> DaoAutomatic queryDMLId(int id, String tableName, Class<DaoAutomatic> Class) {
		return daoFrameDMLBaseInterfaces.queryDMLId(id, tableName, Class);
	}

	/**
	 * 不分頁 不統計總數的 單行 多列 數據 數據庫列和bean屬性映射
	 * 
	 * 有缓存
	 * 
	 * Front：*（可選擇返回的列）
	 * 
	 * ClassName：數據庫表名
	 * 
	 * where：如果有條件 記得加上and 沒有可以不填
	 * 
	 * class1：返回數據 封裝的bean的類型
	 * 
	 * 例如：querySingleDate(1,"Shopping",Shopping.class)
	 * 
	 * 返回 Shopping 類型數據
	 */
	public <DaoAutomatic> DaoAutomatic querySingleDate(String Front, String ClassName, String where,
			Class<DaoAutomatic> Class) {
		return daoFrameDMLBaseInterfaces.querySingleDate(Front, ClassName, where, Class);
	}

	/**
	 * 根據id刪除數據
	 * 
	 * 無缓存
	 * 
	 * id:id
	 * 
	 * TableName：數據庫表名
	 * 
	 * 例如：deleteObject("Shopping",1)
	 * 
	 * 返回 成功的條數
	 * 
	 * int 類型數據
	 */
	public Integer deleteObject(String TableName, int id) {
		return daoFrameDMLBaseInterfaces.deleteObject(TableName, id);
	}

	/**
	 * 根據條件刪除數據
	 * 
	 * 無缓存
	 * 
	 * where: 如果有條件 記得加上and 沒有可以不填(最好是有條件的刪除 否則你就把全表給刪除了)
	 * 
	 * TableName：數據庫表名
	 * 
	 * 例如：deleteObject("Shopping"," and id>10  and id<100")
	 * 
	 * 例如：deleteObject("Shopping"," and id in(1,2,3,4,5,6)")
	 * 
	 * 返回 成功的條數
	 * 
	 * int 類型數據
	 */
	public Integer deleteObject(String TableName, String where) {
		return daoFrameDMLBaseInterfaces.deleteObject(TableName, where);
	}

	/**
	 * 以佔位符 插入數據 並且返回 插入的數據的id
	 * 
	 * 無缓存
	 * 
	 * sqlHeand:插入數據的sql 的 表名和數據段部分
	 * 
	 * objects： 要插入的數據
	 * 
	 * 例如：savePreparedStatementReturnId("Shopping(title,loves) values(?,?)", new
	 * Object[]{"完美的鞋子",10})
	 * 
	 * 返回 這條數據對於的id
	 * 
	 * int 類型數據
	 */
	public <T> T savePreparedStatementReturnId(String sqlHeand, Object[] objects) {
		return daoFrameDMLBaseInterfaces.savePreparedStatementReturnId(sqlHeand, objects);
	}

	/**
	 * 以佔位符 修改數據
	 * 
	 * 無缓存
	 * 
	 * sqlHeand:修改數據的sql 的 表名和數據段部分
	 * 
	 * where:如果有條件 記得加上and 沒有可以不填(最好是有條件的修改)
	 * 
	 * objects： 要修改的數據
	 * 
	 * 例如：UpdatePreparedStatement("Shopping set title=?,loves=?",
	 * " and id=10",new Object[]{"完美的鞋子",10})
	 * 
	 * 返回 成功的條數
	 * 
	 * int 類型數據
	 */
	@Override
	public <T> T UpdatePreparedStatement(String sqlHeand, String where, Object[] objects) {

		return daoFrameDMLBaseInterfaces.UpdatePreparedStatement(sqlHeand, where, objects);
	}

	/**
	 * 以佔位符批量添加數據
	 * 
	 * 無缓存
	 * 
	 * sqlHeand:插入數據的sql 的 表名和數據段部分
	 * 
	 * objects： 要添加的數據
	 * 
	 * Object[] object=new Object[]{"完美的鞋子",10};
	 * 
	 * list<Object[]> li=new ArrayList<Object[]>();
	 * 
	 * li.add(object);li.add(object);li.add(object);li.add(object);
	 * 
	 * 例如：savePreparedStatementBatch("Shopping(title,loves) values(?,?)", li)
	 * 
	 * 返回 成功的條數
	 * 
	 * int 類型數據
	 */
	@Override
	public <T> T savePreparedStatementBatch(String sqlHeand, List<Object[]> objects) {
		return daoFrameDMLBaseInterfaces.savePreparedStatementBatch(sqlHeand, objects);
	}

	/**
	 * 以佔位符批量修改數據
	 * 
	 * 無缓存
	 * 
	 * sqlHeand:插入數據的sql 的 表名和數據段部分
	 * 
	 * where：如果有條件 記得加上and 沒有可以不填(最好是有條件的修改)
	 * 
	 * objects： 要添加的數據
	 * 
	 * Object[] object=new Object[]{"完美的鞋子",10};
	 * 
	 * list<Object[]> li=new ArrayList<Object[]>();
	 * 
	 * li.add(object);li.add(object);li.add(object);li.add(object);
	 * 
	 * 例如：UpdatePreparedStatementBatch( "Shopping set title=?,loves=?)", li)
	 * 
	 * 返回 成功的條數
	 * 
	 * int 類型數據
	 */
	public <Transmission> Transmission UpdatePreparedStatementBatch(String sqlHeand, String where,
			List<Object[]> objects) {
		return daoFrameDMLBaseInterfaces.UpdatePreparedStatementBatch(sqlHeand, where, objects);
	}

	/**
	 * 不統計總數 查找 單行 單列 的數據
	 * 
	 * 無缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * ClassName：數據庫表名
	 * 
	 * where: 如果有條件 記得加上and 沒有可以不填
	 * 
	 * 例如：querySingleMap(" * ","[Shopping]"," ")
	 * 
	 * 返回的Map數據是:key 是數據庫列名 value 是這列的值
	 * 
	 * 返回 Map 類型數據
	 * 
	 */
	@Override
	public <DaoAutomatic> DaoAutomatic querySingleMap(String Front, String ClassName, String where) {
		return daoFrameDMLBaseInterfaces.querySingleMap(Front, ClassName, where);
	}

	/**
	 * 不統計總數 查找 多行 多列 的數據
	 * 
	 * 無缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * ClassName：數據庫表名
	 * 
	 * where: 如果有條件 記得加上and 沒有可以不填
	 * 
	 * 例如：querySingleListMap(" * ","[Shopping]"," ")
	 * 
	 * 返回的Map數據是:key 是數據庫列名 value 是這列的值
	 * 
	 * 返回List<Map> 類型數據
	 * 
	 */
	@Override
	public <DaoAutomatic> DaoAutomatic querySingleListMap(String Front, String ClassName, String where) {
		return daoFrameDMLBaseInterfaces.querySingleListMap(Front, ClassName, where);
	}

	/**
	 * 不統計總數 查找 單行 單列 的數據
	 * 
	 * 無缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * ClassName：數據庫表名
	 * 
	 * where: 如果有條件 記得加上and 沒有可以不填
	 * 
	 * 例如：querySingleString(" title ","[Shopping]"," ")
	 * 
	 * 返回的 第一行 第一列的數據
	 * 
	 * 返回String 類型數據
	 * 
	 */
	@Override
	public <DaoAutomatic> DaoAutomatic querySingleString(String Front, String ClassName, String where) {
		return daoFrameDMLBaseInterfaces.querySingleString(Front, ClassName, where);
	}

	/**
	 * 不統計總數 查找 多行 多列 的數據
	 * 
	 * 無缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * ClassName：數據庫表名
	 * 
	 * where: 如果有條件 記得加上and 沒有可以不填
	 * 
	 * size：長度
	 * 
	 * page：頁碼 從0開始
	 * 
	 * order：排序字段 一定要寫
	 * 
	 * descOrAsc：排序方式 desc asc
	 * 
	 * position：定位的id 沒有可以填空 或者填0
	 * 
	 * 例如：querySingleListPageMap(" * ","[Shopping]"," ",10,0,"id","asc",0);
	 * 
	 * 返回的 分頁的listMap數據
	 * 
	 * 返回List<Map> 類型數據
	 * 
	 */
	@Override
	public <DaoAutomatic> List<DaoAutomatic> querySingleListPageMap(String Front, String ClassName, String where,
			int size, int page, String order, String descOrAsc, int position) {
		return daoFrameDMLBaseInterfaces.querySingleListPageMap(Front, ClassName, where, size, page, order, descOrAsc,
				position);
	}

	/**
	 * 不統計總數 查找 多行 多列 的數據
	 * 
	 * 無缓存
	 * 
	 * Front: * （可選擇返回的列）
	 * 
	 * ClassName：數據庫表名
	 * 
	 * where: 如果有條件 記得加上and 沒有可以不填
	 * 
	 * 例如：querySingleListObjects(" top 100 * ","[Shopping]"," ")
	 * 
	 * 返回 多行數據
	 * 
	 * 返回List<Object[]> 類型數據
	 * 
	 */
	public <DaoAutomatic> DaoAutomatic querySingleListObjects(String Front, String ClassName, String where) {
		return daoFrameDMLBaseInterfaces.querySingleListObjects(Front, ClassName, where);
	}

	public <T> List<T> findSelecNoEachOneOrMay(String Front, String ClassName, String where, Class<T> Class) {
		return daoFrameDMLBaseInterfaces.findSelecNoEachOneOrMay(Front, ClassName, where, Class);
	}

	public <T> List<T> findSelecEachOneOrMay(String Front, String ClassName, String where, Class<T> Class) {
		return daoFrameDMLBaseInterfaces.findSelecEachOneOrMay(Front, ClassName, where, Class);
	}

}
